|
Menüeintrag |
---|
Bearbeiten → Placement... |
Arbeitsbereich |
Alle |
Standardtastenkürzel |
Keiner |
Eingeführt in Version |
- |
Siehe auch |
Std Ausrichtung, Positionierung |
Der Befehl Std Positionierung zeigt den Aufgabenbereich Placement für ein ausgewähltes Objekt an.
Der Aufgabenbereich Placement
Der Dialog kann auch durch Klicken auf die Ellipsentaste ... gestartet werden, die im Eigenschafteneditor erscheint, wenn man auf die Daten-EigenschaftPlacement klickt.
Siehe auch: Autogenerierte API-Dokumentation und Grundlagen der Skripterstellung in FreeCAD.
Siehe das Python Skipterstellung Tutorium.
Eine Positionierung wird intern durch eine Matrix bestimmt; in vielen Fällen ist es einfacher, dies durch zwei Komponenten darzustellen, einem Base
-Punkt (Vektor) und einem Rotation
-Wert. Rotation
selbst hat verschiedene Entsprechungen. Es kann vollständig durch den Wert einer "quaternion" (xi + yj + zk + w)
bestimmt werden. Es kann aber auch durch eine Rotations Axis
(Einheitsvektor) und eine Rotations Angle
(Bogenmaß) bestimmt werden.
import FreeCAD as App
doc = App.newDocument()
obj = doc.addObject("Part::Cylinder", "Cylinder")
print(obj.Placement)
# Placement [Pos=(0,0,0), Yaw-Pitch-Roll=(0,0,0)]
print(obj.Placement.Base)
# Vector (0.0, 0.0, 0.0)
print(obj.Placement.Rotation)
# Rotation (0.0, 0.0, 0.0, 1.0)
print(obj.Placement.Rotation.Angle)
# 0.0
print(obj.Placement.Rotation.Axis)
# Vector (0.0, 0.0, 1.0)
print(obj.Placement.Rotation.Q)
# (0.0, 0.0, 0.0, 1.0)
Verschiebe den Basispunkt des Objekts und drehe dann das Objekt um 45 Grad um die x-Achse.
Das Modul math stellt eine Methode radians()
zur Verfügung, mit der einfach von Grad in Bogenmaß umgewandelt werden kann und muss als erstes importiert werden.
import math
obj.Placement.Base = App.Vector(5, 3, 1)
obj.Placement.Rotation.Axis = App.Vector(1, 0, 0)
obj.Placement.Rotation.Angle = math.radians(45)
print(obj.Placement)
# Placement [Pos=(5,3,1), Yaw-Pitch-Roll=(0,0,45)]
print(obj.Placement.Rotation.Q)
# (0.3826834323650898, 0.0, 0.0, 0.9238795325112867)
print(obj.Placement.Matrix)
# Matrix ((1,0,0,5),(0,0.707107,-0.707107,3),(0,0.707107,0.707107,1),(0,0,0,1))